import java.util.HashMap;
import java.util.HashSet;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: syyyy
 * Date: 2025-10-20
 * Time: 10:38
 */
public class Test {
    public static int[] FindNumsAppearOnce(int[] nums) {
        int[] ret = new int[2];
        int num = nums[0];
        for (int i = 1; i < nums.length; i++) {
            num = num ^ nums[i];
        }
        //到这里的时候，num=4^6=2，其实4^6就是找出4和6不同的地方，这个地方也可以中找出4或者6最后一个1的位置，因为是异或，一定有一位是一个数字是1一个数字是0
        num = num - (num & (num - 1));//此时的num就是标志着4和6最后一个1的数字（也是4和6不同的标志），谨记，这个4位数里，只有一个是1，这个1就是标志着4和6的不同
        for (int i = 0; i < nums.length; i++) {
            if ((nums[i] & num) == 0) {
                ret[0] = ret[0] ^ nums[i];
            } else {
                ret[1] = ret[1] ^ nums[i];
            }
        }
        return ret;
    }

    public static int minNumberDisappeared (int[] nums){
        int minNum=1;
        HashSet<Integer> set=new HashSet<>();
        for (int i = 0; i < nums.length; i++) {
            set.add(nums[i]);
            if(nums[i] == minNum){
                minNum++;
            }
            if(set.contains(minNum)){
                minNum++;
            }
        }
        if(set.contains(minNum)){
            minNum++;
        }
        if(set.contains(minNum)){
            minNum++;
        }
        return minNum;
    }
    public static void main(String[] args) {
        int[] nums=new int[]{4,3,2,1};
        int ret=minNumberDisappeared(nums);
        System.out.println(ret);
    }
}
